#include <QDebug>

#include "qlsvolumetooltipwidget.h"
#include "ui_qlsvolumetooltipwidget.h"

QLsVolumeToolTipWidget::QLsVolumeToolTipWidget(QWidget *parent) :
	QDialog(parent),
	ui(new Ui::QLsVolumeToolTipWidget)
{
	ui->setupUi(this);

	setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);	/* 设置无边框属性 */
	installEventFilter(this);								/* 注册事件过滤器 */
	setAttribute(Qt::WA_DeleteOnClose);						/* 关闭后自动销毁自身对象 */

	ui->volumeVSlider->setRange(0, 100);
	ui->volumeVSlider->installEventFilter(this);
}

QLsVolumeToolTipWidget::~QLsVolumeToolTipWidget()
{
	delete ui;
}

int QLsVolumeToolTipWidget::value() const
{
	return ui->volumeVSlider->value();
}

void QLsVolumeToolTipWidget::setValue(const int &value)
{
	ui->volumeLabel->setText(QString::number(value));
	ui->volumeVSlider->setValue(value);
}

void QLsVolumeToolTipWidget::popup(QPoint pos, const int &value)
{
	QLsVolumeToolTipWidget *t = new QLsVolumeToolTipWidget();
	t->setValue(value);
	t->show();
	t->move(pos);
}

/* 事件过滤器 */
bool QLsVolumeToolTipWidget::eventFilter(QObject *watched, QEvent *event)
{
	/* 鼠标点击其他地方的时候自动关闭 */
	if(watched == this)
	{
		if(event->type() == QEvent::WindowDeactivate)
		{
			close();
			event->accept();
			return true;
		}
	}

	/* 音量条 */
	if(watched == ui->volumeVSlider)
	{
		if(event->type() == QEvent::MouseButtonPress)
		{
			double pos = (QCursor::pos().y() - ui->volumeVSlider->mapToGlobal(QPoint(0, 0)).y()) /
					(double)ui->volumeVSlider->height();
			ui->volumeVSlider->setValue(
						(1 - pos) * (ui->volumeVSlider->maximum() - ui->volumeVSlider->minimum()));
		}
	}

	return QWidget::eventFilter(watched, event);
}

/* 音量修改 */
void QLsVolumeToolTipWidget::on_volumeVSlider_valueChanged(int value)
{
	/* 同步显示Label */
	ui->volumeLabel->setText(QString::number(value));

	/* 发送音量变化信号 */
	float volume = value / 100.0;
	emit sigVolumeChange(volume);
}
